<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Object.defineProerty</title>
  </head>
  <body>
    <script type="text/javascript">
      var number = 18
      let person = {
        name: '小万',
        sex: '男',
      }

      //   Object.defineProperty(person, "age", {
      //     value: 18,
      //     // enumerable: true, //是否可枚举(遍历属性)默认值false
      //     // writable: true, //是否可编辑 默认值false
      //     // configurable: true, //是否可以删除 默认值false

      //     // get() {
      //     //   return number;
      //     // },
      //     // set(value) {
      //     //   number = value;
      //     // },
      //   });
      //   console.log(Object.keys(person));

      // Object.defineProperty有三个参数  第一个参数
      // 需要添加属性的对象  第二个参数往第一个参数对象里添加的属性 第三个参数 配置项

      Object.defineProperty(person, 'age', {
        //   value和 get 是同一个作用，只能同时用一个。
        //   writable和set是同一个作用，用一个。
        // value: 10,
        enumerable: true,
        // writable: true,
        configurable: true,
        get: function () {
          console.log('有人读去了age属性')
          return number
        },
        set: function (value) {
          number = value
        },
      })
    </script>
  </body>
</html>
